Graphics image processing is a computationally intensive process that is structured hierarchically to optimize the use of special purpose hardware and software. Complex images are created as, or partitioned into, smaller areas that have definable characteristics, and each of these smaller areas are processed to provide the details required to determine the value that is assigned to each individual picture element (pixel) in a display.
In conventional graphics image processing systems, the complex images consist of a combination of polygon areas, typically triangular areas, that form the image. The complex images are processed by software on a general purpose processor to produce characteristics that are associated with each of the polygon areas. The characteristics of the polygon areas are encoded as attributes that are associated with each vertex of the polygon that encloses the area. For example, each vertex includes a color attribute that defines the color at that vertex. The color at points between two vertexes is determined thereafter by an interpolation of the colors at each vertex. In the general case, the attribute values at the vertexes of each polygon define the coefficients that are used to determine the value at any location on the surface defined by the polygon.
The attributes associated with each vertex of each polygon are communicated to a special purpose graphics processing device. The graphics processing device typically consists of a setup engine and a rasterizer. The setup engine processes the vertexes associated with each polygon to produce surface coefficients. The rasterizer processes the surface coefficients to define each value that is to be displayed for each location within each polygon. The time to process each polygon is the sum of the time required to setup the polygon plus the time to rasterize the polygon. FIG. 1A illustrates the relationship between the size of the polygon and the time to process the polygon. The setup time 510 required by the setup engine to process the vertexes associated with each polygon to produce the surface coefficients is relatively independent of the size of the polygon. The rasterizing time 505 required by the rasterizer to process the surface coefficients is dependent upon the size of the polygon being rendered, because the rasterizer determines a value for each pixel that is contained within the polygon. The total polygon processing time 500 is the sum of setup time 510 and the rasterizing time 505.
The time required to render a polygon affects the overall image processing rate of the graphics image processing system, because the graphics image processing system cannot continually supply images at a rate that is faster than the rate at which the graphics processing device can render the polygons associated with each image. This dependency results in a decrease in the image processing rate for images having a high amount of detail, because although each of the many small areas representing these details can be rendered quickly, each of these many areas incurs a setup time delay. Conversely, an image that has few details will consist of a few large polygons, and although each polygon consumes a rendering time that is proportional to its size, only a few setup time delays will be incurred. FIG. 1B is presented, for illustrative purposes only, to demonstrate this dependency for images that are rendered to a full screen display. Line 530 represents the linear dependency of the image processing time to the number of polygons being processed. A complex image will consist of many small polygons, as illustrated by region 520a of curve 520. Each of these small polygons will incur the setup time 510 required to determine the surface coefficients, plus a rasterizing time 505. As illustrated by line 530 in FIG. 1B, the primary component of the image processing time 520a is the cumulative time of N polygons times the setup time for each polygon. A relatively simple image, on the other hand, will consist of a few polygons, each of the polygons covering a relatively large portion of the image area, as illustrated by region 520c of curve 520. The primary component of the image processing time for a few large polygons is the rasterizing time 505 to determine the pixel value for each pixel location within each of the large polygons. Region 520b represents the processing of average sized polygons, between the regions of a few large polygons 520c and many small polygons 520a. The span 550 of the image processing time of FIG. 1B illustrates the range of processing time that could be incurred in a conventional system, depending upon the complexity of the image being processed.
In a conventional system, to increase the rate at which the graphics processing device processes polygons, two approaches can be taken. The components that perform the setup function and rasterizing function can be made to operate more quickly, or the device can be structured to allow the setup and rasterizing functions to operate in parallel. Increasing the speed of components has a direct impact on the cost, size, and power dissipation of the device, and is limited by available technology. Alternatively, or in addition to increasing the speed of components, a buffer is provided as the interface between the setup engine and the rasterizer, to allow for parallel operation. The buffer stores the surface coefficients that are produced by the setup engine until the rasterizer processes them. The buffer decouples the setup engine performance from the rasterizer performance, so that the delays of each do not result in a cumulative delay. If the rasterizer consumes a significant amount of time processing the surface coefficients of a large polygon, the buffer allows the setup engine to continue to process the vertexes of subsequent polygons during this time. If small polygons are interspersed among large polygons, a significant rate improvement can be realized. While a large polygon is being rendered, the setup engine processes each of the small polygons. When the rasterizer completes the rasterization of the large polygon, it commences the rasterization of each of the small polygons. Because the rasterization is substantially dependent upon the size of the polygon being rendered, each of the small polygons are rendered quickly. To allow for this parallel processing and resultant rate improvement, the buffer must be sufficiently sized so as to allow the setup engine to continue to process the vertexes of multiple subsequent polygons while a large polygon is being rendered.
With ever increasing advances in graphics image processing to provide for realistic renderings, the details associated with graphics images continually increases. This increase in detail has had a substantial impact on the conventional graphics processing devices, in two areas. The increase in realism requires an increase in the amount of data corresponding to the coefficients required to describe the polygon surfaces, and the time required to process this increased amount of data increases. Because the amount of data associated with each vertex attribute is larger, the conventional buffer is insufficiently sized to allow the setup engine to process a large number of subsequent vertex attributes while the rasterizer is processing the large polygons. Therefore, the buffer is less able to decouple the setup engine performance from the rasterizer performance, and the setup time is more likely to affect the overall image processing performance, as illustrated in FIG. 1B.
The overall image processing performance is limited by the upper bound of the span 550 of the image processing time in FIG. 1B, because the image processing system must provide an image processing rate that is independent of the content of the particular images being rendered.
Consequently, there exists a need for a graphics processing device and method for processing graphics data that provides for an image processing rate that is substantially independent of the image complexity.